1. Field of the Invention
Embodiments of the present invention relate generally to computer graphics and more specifically to asymmetric multi-GPU processing.
2. Description of the Related Art
Computer graphics image data typically undergoes several processing steps before being displayed on a display device. Each processing step further refines the image data, however, each processing step also adds processing time required for each frame of data. For example, typical processing steps include two-dimensional (2-D) and three-dimensional (3-D) processing. A subset of computer graphics data is video image data. Video image data may be processed with several process steps as well. One example of video image data is image data related to digital video disks (DVDs).
Video image data, unlike typical computer graphics image data, is displayed at sixty frames per second. Therefore, the video image processing procedures for the video data must execute in less time than the time required to display one frame of video data (approximately 16.67 milliseconds). If the time required to process a frame of video data is greater than the time required to display a frame of video data, then the processed video data cannot be displayed. Instead, previous video data is often shown in place of the current video data. This phenomenon is commonly referred to as “dropping” video frames and is quite undesirable because it results in poor video quality.
A graphics processing unit (GPU) is often configured to provide the video image processing that is required for video image data before such data can be displayed. For example, the GPU may be configured to use its 3-D processing unit and 2-D processing unit to process the video image data. Since, as described above, the display frame rate limits the amount of time available to process each frame and since each video image processing task increases overall processing time, the number and complexity of the image processing procedures that may be executed on single GPU is limited. Exacerbating this problem is the fact that high definition video images require processing up to six times more pixels than standard definition images. Increasing the pixel count increases the amount of time required to perform each processing procedure, thereby further limiting the number of video image processing procedures a single GPU can apply to a frame of image data without dropping the video frame.
One approach to reducing overall processing time has been to configure multiple GPUs to work in parallel to process a single video frame. This approach generally entails using functionally identical GPUs to simultaneously process different portions of a video frame to increase the throughput of a video processing system. One drawback to this approach is the constraint that the GPUs be functionally identical. For example, if a computing system includes a first GPU, and a user wants to add a second GPU, unless the user adds a second GPU that is functionally identical to the first GPU, the GPUs are not able to work in parallel as envisioned by this approach.
As the foregoing illustrates, what is needed in the art is a way to increase video processing throughput without placing such undesirable design constraints on video processing systems.